/*Copyright (C) 2009 - 2011 MASSART GAUTHIER

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

#include "../headers.h"

void ban_affichage_pot(short pot[13], const char *message, const char *info, const char *joueur, long choix, long position) {
	short y = 0, x = 0, i = 0, j = 0, k = 0;
	bool ok_haut = false, ok_bas = false;
	short n = 0;

	ban_afficher_message(message);
	ban_afficher_info(info, joueur);

	CSLP_Color(ban_couleur_tableau, ban_couleur_fond);
	y = 5, x = x_begin_center(97);

	move(y, x);
	afficher_char_fullblock(97, ban_couleur_tableau);
	y++;

	while(j != 8) {
		move(y, x);

		for(n = 0 ; n < 6 ; n++) {
			afficher_char_fullblock(1, ban_couleur_tableau);
			addstr("               ");
		}

		afficher_char_fullblock(1, ban_couleur_tableau);
		y++;
		j++;
	}

	move(y, x);
	afficher_char_fullblock(97, ban_couleur_tableau);
	j = 0;
	y++;

	while(j != 8) {

		move(y, x);
		afficher_char_fullblock(1, ban_couleur_tableau);
		addstr("               ");
		afficher_char_fullblock(1, ban_couleur_tableau);
		x += 80;
		move(y, x);
		afficher_char_fullblock(1, ban_couleur_tableau);
		addstr("               ");
		afficher_char_fullblock(1, ban_couleur_tableau);
		y++;
		j++;
		x = x_begin_center(97);
	}

	move(y, x);
	j = 0;
	afficher_char_fullblock(97, ban_couleur_tableau);
	y++;

	while(j != 8) {
		move(y, x);

		for(n = 0 ; n < 6 ; n++) {
			afficher_char_fullblock(1, ban_couleur_tableau);
			addstr("               ");
		}

		afficher_char_fullblock(1, ban_couleur_tableau);
		y++;
		j++;
	}

	move(y, x);
	afficher_char_fullblock(97, ban_couleur_tableau);

	ban_afficher_nombre_cailloux_pot(pot);
	ban_afficher_cailloux(pot);

	if(position == 1) {
		ok_haut = true;
		y = 13;
		x = x_begin_center(97) + 1;

		if(choix > 7 && choix < 13) {
			x += 16 * (13 - choix);
		}
	}
	else if(position == 2) {
		ok_bas = true;
		y = 31;
		x = x_begin_center(97) + 1;

		if(choix > 1 && choix < 8) {
			x += 16 * (choix - 1);
		}
	}

	if((ok_bas || ok_haut) && choix != 0) {
		k = x;

		while(i != 15) {
			mvchgat(y, k, 1, A_BOLD, CSLP_GetPair(COLOR_YELLOW, ban_couleur_selecteur), NULL);
			k++;
			i++;
		}
	}

	if(choix == 0) {
		CSLP_Color(COLOR_WHITE, ban_couleur_selecteur);
	}

	mvaddstr(35, 5, "┌─────────┐");
	mvaddstr(36, 5, "│ QUITTER │");
	mvaddstr(37, 5, "└─────────┘");
	CSLP_Color(COLOR_WHITE, COLOR_BLACK);

	refresh();
}

void ban_afficher_message(const char *message) {
	save_cursor_pos();
	move(19, 0);
	CSLP_Color(COLOR_RED, COLOR_BLACK);
	clear_line();
	afficher_centre(message);
	restore_cursor_pos();
	CSLP_ColorText(COLOR_WHITE);
}

void ban_afficher_info(const char *info, const char *joueur) {
	save_cursor_pos();
	move(38, 0);
	CSLP_Color(COLOR_RED, COLOR_BLACK);
	clear_line();
	afficher_centre(joueur);
	CSLP_ColorText(CT);
	clear_line();
	afficher_centre(info);
	restore_cursor_pos();
	CSLP_ColorText(COLOR_WHITE);
}

void ban_afficher_nombre_cailloux_pot(short pot[13]) {
	long numero = 0;

	save_cursor_pos();

	while(numero != 14) {
		if(numero == 0) {
			CSLP_Color(COLOR_GREEN, ban_couleur_fond);
			mvprintw(22, x_begin_center(97) + 8, "%u", pot[numero]);
		}
		else if(numero > 0 && numero < 7) {
			CSLP_Color(COLOR_YELLOW, ban_couleur_fond);
			mvprintw(31, numero * 16 + x_begin_center(97) - 8, "%u", pot[numero]);
		}
		else if(numero == 7) {
			CSLP_Color(COLOR_GREEN, ban_couleur_fond);
			mvprintw(22, x_begin_center(97) + 88, "%u", pot[numero]);
		}
		else if(numero > 7 && numero < 14) {
			CSLP_Color(COLOR_YELLOW, ban_couleur_fond);
			mvprintw(13, (14 - numero) * 16 + x_begin_center(97) - 8, "%u", pot[numero]);
		}

		numero++;
	}

	restore_cursor_pos();
	CSLP_ColorText(COLOR_WHITE);
}

void ban_afficher_cailloux(short pot[13]) {
	long y = 0, x = 0, numero = 0, nombre_cailloux = 0;
	char ligne_cailloux[8][50] = {
		"",
		"       ■",
		"     ■   ■",
		"   ■   ■   ■",
		"  ■  ■   ■  ■",
		" ■  ■  ■  ■  ■",
		"  ■ ■ ■ ■ ■ ■",
		" ■ ■ ■ ■ ■ ■ ■ ",
	};

	CSLP_Color(ban_couleur_cailloux, ban_couleur_fond);

	save_cursor_pos();

	while(numero != 14) {
		if(numero == 0) {
			y = 15;
			x = x_begin_center(97) + 1;
		}
		else if(numero > 0 && numero < 7) {
			y = 24;
			x = 16 * numero - (x_begin_center(97) - 17);
		}
		else if(numero == 7) {
			y = 15;
			x = x_begin_center(97) + 81;
		}
		else if(numero > 7 && numero < 14) {
			y = 6;
			x = (14 - numero) * 16 - (x_begin_center(97) - 17);
		}
		nombre_cailloux = pot[numero];

		while(nombre_cailloux > 0) {
			if(nombre_cailloux >= 7) {
				mvaddstr(y, x, ligne_cailloux[7]);
				y += 2;
				nombre_cailloux -= 7;
			}
			else {
				mvaddstr(y, x, ligne_cailloux[nombre_cailloux]);
				nombre_cailloux = 0;
			}
		}

		numero++;
	}

	restore_cursor_pos();
	CSLP_ColorText(COLOR_WHITE);
}
